#include<bits/stdc++.h>
using namespace std;
const int N=100005;
const int M=1000005;
int T,n,m,v;
struct car{
    int st,vc,a;
};
car s[N];
int num;
int c[M][N];

int main(){
    cin>>T>>n>>m>>v;
    while(T--){
        car s[N];
        for(int i=1;i<=n;i++){
            cin>>s[i].st>>s[i].vc>>s[i].a;
        }
        for(int i=1;i<=m;i++){
            cin>>c[i][0];
        };
        for(int i=1;i<=n;i++){

            if(s[i].a==0&&s[i].vc>v){
                num++;
                for(int j=1;j<=m;j++){
                    c[j][i]++;
                }

            }
            if(s[i].a<=0&&s[i].vc>v){
                int dis=(s[i].vc*s[i].vc-v*v)/2/(s[i].a)+s[i].st;
                num++;
                for(int j=1;j<=m;j++){
                    if(c[j][0]<=dis&&c[j][0]>=s[i].st){
                        c[j][i]++;
                    }
                }
            }
            if(s[i].a>0){
                int dis=s[i].st+(v*v-s[i].vc*s[i].vc)/2/(s[i].a);
                num++;
                for(int j=1;j<=m;j++){
                    if(c[j][0]>=dis){
                        c[j][i]++;
                    }
                }
            }
        }
        cout<<num;
    }
    return 0;
}
